commonlibsse_ng\re\b/
BGSPerk.rs1use crate::re::BGSPerkEntry::BGSPerkEntry;
2use crate::re::BSTArray::BSTArray;
3use crate::re::FormTypes::FormType;
4use crate::re::TESCondition::TESCondition;
5use crate::re::TESDescription::{TESDescription, TESDescriptionVtbl};
6use crate::re::TESForm::{TESForm, TESFormVtbl};
7use crate::re::TESFullName::{TESFullName, TESFullNameVtbl};
8use crate::re::TESIcon::{TESIcon, TESIconVtbl};
9use crate::re::offsets_rtti::RTTI_BGSPerk;
10use crate::re::offsets_vtable::VTABLE_BGSPerk;
11use crate::rel::id::VariantID;
12
13#[repr(C)]
14#[derive(Debug, PartialEq)]
15pub struct BGSPerk {
16 pub __base: TESForm, pub __base1: TESFullName, pub __base2: TESDescription, pub __base3: TESIcon, pub data: PerkData, pub pad55: u8, pub pad56: u16, pub perkConditions: TESCondition, pub perkEntries: BSTArray<*mut BGSPerkEntry>, pub nextPerk: *mut BGSPerk, }
27const _: () = assert!(core::mem::size_of::<BGSPerk>() == 0x80);
28
29impl BGSPerk {
30 pub const RTTI: VariantID = RTTI_BGSPerk;
32
33 pub const VTABLE: [VariantID; 4] = VTABLE_BGSPerk;
37
38 pub const FORM_TYPE: FormType = FormType::Perk;
40}
41
42#[repr(C)]
43pub struct BGSPerkVtbl {
44 pub __base: TESFormVtbl,
45 pub __base1: TESFullNameVtbl, pub __base2: TESDescriptionVtbl, pub __base3: TESIconVtbl, }
49
50#[derive(Debug, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
51#[repr(C)]
52pub struct PerkData {
53 trait_: bool, level: i8, numRanks: i8, playable: bool, hidden: bool, }
59const _: () = assert!(core::mem::size_of::<PerkData>() == 0x5);
60
61#[commonlibsse_ng_derive_internal::to_bitflags]
62#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
63#[repr(u32)]
64pub enum RecordFlag {
65 NonPlayable = 1 << 2,
66 Deleted = 1 << 5,
67 Ignored = 1 << 12,
68}